package com.salelogistics.basic.service;

import java.util.List;
import com.salelogistics.basic.domain.BasMaterialType;
import com.salelogistics.basic.domain.vo.TreeSelect;
import com.salelogistics.system.api.domain.SysDept;

/**
 * 材料类型Service接口
 * 
 * @author ruoyi
 * @date 2023-07-14
 */
public interface IBasMaterialTypeService 
{
    /**
     * 查询材料类型
     * 
     * @param materialTypeId 材料类型主键
     * @return 材料类型
     */
    public BasMaterialType selectBasMaterialTypeByMaterialTypeId(Long materialTypeId);

    /**
     * 查询材料类型列表
     * 
     * @param basMaterialType 材料类型
     * @return 材料类型集合
     */
    public List<BasMaterialType> selectBasMaterialTypeList(BasMaterialType basMaterialType);

    /**
     * 新增材料类型
     * 
     * @param basMaterialType 材料类型
     * @return 结果
     */
    public int insertBasMaterialType(BasMaterialType basMaterialType);

    /**
     * 修改材料类型
     * 
     * @param basMaterialType 材料类型
     * @return 结果
     */
    public int updateBasMaterialType(BasMaterialType basMaterialType);

    /**
     * 批量删除材料类型
     * 
     * @param materialTypeIds 需要删除的材料类型主键集合
     * @return 结果
     */
    public int deleteBasMaterialTypeByMaterialTypeIds(Long[] materialTypeIds);

    /**
     * 删除材料类型信息
     * 
     * @param materialTypeId 材料类型主键
     * @return 结果
     */
    public int deleteBasMaterialTypeByMaterialTypeId(Long materialTypeId);

    /**
     * 查询材料类型树结构信息
     *
     * @param type 材料类型信息
     * @return 部门树信息集合
     */
    public List<TreeSelect> selectTypeTreeList(BasMaterialType type);

    /**
     * 构建前端所需要树结构
     *
     * @param types 部门列表
     * @return 树结构列表
     */
    public List<BasMaterialType> buildTypeTree(List<BasMaterialType> types);

    /**
     * 构建前端所需要下拉树结构
     *
     * @param types 部门列表
     * @return 下拉树结构列表
     */
    public List<TreeSelect> buildTypeTreeSelect(List<BasMaterialType> types);

    List<BasMaterialType> selectTypeParent(Long typeId);
}
